package com.yanqu.road.entity.kowloon.config;

import com.yanqu.road.entity.kowloon.common.KowloonBuffParam;
import com.yanqu.road.entity.kowloon.common.KowloonRange;
import com.yanqu.road.utils.RandomHelper;

import java.util.ArrayList;
import java.util.List;

/**
 * npc 属性配置
 */
public class KowloonNpcAttributeConfig {

    /**
     * 攻击力
     */
    private long atk;

    /**
     * 攻击频率/每秒攻击xx次×1000
     */
    private int atkSpeed;

    /**
     * 攻击范围/格子
     * x轴；y轴
     * 100表示1格子
     */
    private KowloonRange attackRange = new KowloonRange();

    /**
     * 受击范围/格子
     * x轴；y轴
     * 100表示1格子
     */
    private KowloonRange hitRange = new KowloonRange();

    /**
     * 移动速度/子弹速度/武器旋转速度/每秒移动xx格子
     * 100表示1格子
     */
    private int moveSpeed;


    /**
     * 子弹数量（通用配置）
     */
    private int bullet;

    /**
     * 穿透数（攻击敌人数量）
     */
    private int attackNum;

    /**
     * 减速（减速千分比；持续时间/ms；buff叠加次数上限）
     */
    private KowloonBuffParam slowParam = new KowloonBuffParam();

    /**
     * 冰冻（冰冻概率千分比；持续时间/ms；buff叠加次数上限）
     */
    private KowloonBuffParam freezeParam = new KowloonBuffParam();

    /**
     * 掉血（伤害为管家婆攻击力的千分比；持续时间/ms；buff叠加次数上限））
     */
    private KowloonBuffParam bleedingParam = new KowloonBuffParam();


    /**
     * 眩晕（眩晕概率千分比；持续时间/ms；buff叠加次数上限）
     */
    private KowloonBuffParam vertigoParam = new KowloonBuffParam();


    /**
     * 子弹弹射范围（以地痞为中心N格）
     */
    private int ejectionRange;

    /**
     * 武器半径（以好汉为中心）
     */
    private int weaponRadius;

    /**
     * 怪物死后参数
     * 爆炸半径，地痞id，地痞数量，地痞血量千分比
     */
    private List<Integer> deadParamList = new ArrayList<>();

    /**
     * 怪物闪现y轴
     */
    private List<Integer> flashYPos = new ArrayList<>();

    /**
     * 减速、冰冻、眩晕buff间隔时间/ms（只要中任一效果，就进入冷却时间，受击后开始算
     */
    private List<Integer> buffCd = new ArrayList<>();

    /**
     * 伤害效果 落雷buff
     */
    private KowloonBuffParam thunderBuffParam = new KowloonBuffParam();

    /**
     * 击退效果/格子数(与好汉距离1格；与好汉距离2格；与好汉距离3格；与好汉距离4格
     */
    private KowloonBuffParam beatBackParam = new KowloonBuffParam();

    /**
     * 加攻效果（好汉最大攻击力的千分比；buff叠加次数上限）
     */
    private KowloonBuffParam atkBuffParam = new KowloonBuffParam();

    public long getAtk() {
        return atk;
    }

    public void setAtk(long atk) {
        this.atk = atk;
    }

    public int getAtkSpeed() {
        return atkSpeed;
    }

    public void setAtkSpeed(int atkSpeed) {
        this.atkSpeed = atkSpeed;
    }

    public KowloonRange getAttackRange() {
        return attackRange;
    }

    public void setAttackRange(KowloonRange attackRange) {
        this.attackRange = attackRange;
    }

    public KowloonRange getHitRange() {
        return hitRange;
    }

    public void setHitRange(KowloonRange hitRange) {
        this.hitRange = hitRange;
    }

    public int getMoveSpeed() {
        return moveSpeed;
    }

    public void setMoveSpeed(int moveSpeed) {
        this.moveSpeed = moveSpeed;
    }

    public int getBullet() {
        return bullet;
    }

    public void setBullet(int bullet) {
        this.bullet = bullet;
    }

    public int getAttackNum() {
        return attackNum;
    }

    public void setAttackNum(int attackNum) {
        this.attackNum = attackNum;
    }

    public KowloonBuffParam getSlowParam() {
        return slowParam;
    }

    public void setSlowParam(KowloonBuffParam slowParam) {
        this.slowParam = slowParam;
    }

    public KowloonBuffParam getFreezeParam() {
        return freezeParam;
    }

    public void setFreezeParam(KowloonBuffParam freezeParam) {
        this.freezeParam = freezeParam;
    }

    public KowloonBuffParam getBleedingParam() {
        return bleedingParam;
    }

    public void setBleedingParam(KowloonBuffParam bleedingParam) {
        this.bleedingParam = bleedingParam;
    }

    public KowloonBuffParam getVertigoParam() {
        return vertigoParam;
    }

    public void setVertigoParam(KowloonBuffParam vertigoParam) {
        this.vertigoParam = vertigoParam;
    }

    public KowloonBuffParam getBeatBackParam() {
        return beatBackParam;
    }

    public void setBeatBackParam(KowloonBuffParam beatBackParam) {
        this.beatBackParam = beatBackParam;
    }

    public int getEjectionRange() {
        return ejectionRange;
    }

    public void setEjectionRange(int ejectionRange) {
        this.ejectionRange = ejectionRange;
    }

    public int getWeaponRadius() {
        return weaponRadius;
    }

    public void setWeaponRadius(int weaponRadius) {
        this.weaponRadius = weaponRadius;
    }

    public List<Integer> getDeadParamList() {
        return deadParamList;
    }

    public void setDeadParamList(List<Integer> deadParamList) {
        this.deadParamList = deadParamList;
    }

    public List<Integer> getFlashYPos() {
        return flashYPos;
    }

    public void setFlashYPos(List<Integer> flashYPos) {
        this.flashYPos = flashYPos;
    }

    public KowloonBuffParam getAtkBuffParam() {
        return atkBuffParam;
    }

    public void setAtkBuffParam(KowloonBuffParam atkBuffParam) {
        this.atkBuffParam = atkBuffParam;
    }


    public List<Integer> getBuffCd() {
        return buffCd;
    }

    public void setBuffCd(List<Integer> buffCd) {
        this.buffCd = buffCd;
    }

    public KowloonBuffParam getThunderBuffParam() {
        return thunderBuffParam;
    }

    public void setThunderBuffParam(KowloonBuffParam thunderBuffParam) {
        this.thunderBuffParam = thunderBuffParam;
    }
}
